def forward(obs_seq, A, B):
    T = len(obs_seq)  # 获取观测序列的长度
    alpha = [[0] * pos_tag_count for _ in range(T)]  # 创建一个初始值为 0 的二维列表 alpha，用于存储前向算法中的中间结果
    for i in range(pos_tag_count):
        alpha[0][i] = A[0][i] * B[i][obs_seq[0]]  # 初始化 alpha 的第一行
    for t in range(1, T):  # 从第二行开始遍历 alpha 中的每一行
        for i in range(pos_tag_count):  # 遍历当前行中的每一个状态
            alpha[t][i] = sum(alpha[t - 1][j] * A[j][i] * B[i][obs_seq[t]] for j in range(pos_tag_count))  # 计算当前状态的概率
    return alpha